﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Onshi.POS.Modelo.Entidades
{
    [Serializable]
    public abstract class Persona<TRubro, TDomicilio, TTelefono, TEntidadCampoPersonalizado, TCampoPersonalizado> : EntidadAbstracta<TEntidadCampoPersonalizado, TCampoPersonalizado>
        where TRubro : RubroBase
        where TDomicilio : DomicilioBase
        where TTelefono : TelefonoBase
        where TCampoPersonalizado : CampoPersonalizadoBase
        where TEntidadCampoPersonalizado : EntidadCampoPersonalizado<TCampoPersonalizado>
    {
        #region Constructores

        public Persona() :
            base()
        {
        }

        #endregion

        #region Atributos

        private List<TTelefono> telefonos;
        private List<TDomicilio> domicilios;
        private String sitioWeb;
        private String email;
        private TRubro rubro;

        #endregion

        #region Propiedades

        public String RubroNombre
        {
            get { return rubro.Nombre; }
        }

        public TRubro Rubro
        {
            get { return rubro; }
            set { rubro = value; }
        }

        public String Email
        {
            get { return email; }
            set { email = value; }
        }

        public String SitioWeb
        {
            get { return sitioWeb; }
            set { sitioWeb = value; }
        }


        public List<TDomicilio> Domicilios
        {
            get { return domicilios; }
            set { domicilios = value; }
        }

        public List<TTelefono> Telefonos
        {
            get { return telefonos; }
            set { telefonos = value; }
        }

        public Boolean TieneTelefonos
        {
            get { return telefonos.Count != 0 ? true : false; }
        }

        public Boolean TieneDomicilios
        {
            get { return domicilios.Count != 0 ? true : false; }
        }

        #endregion
    }
}
